Localization based on sensor data

ABSTRACT

In one embodiment, a method includes receiving a sequence of location points and motion data associated with a mobile computing device. The method further includes generating, based on the motion data, a motion-data trace of a path and calculating, for each location point, a distance between the location point and a point on the motion-data trace of the path. The method further includes determining that the distance associated with at least one location point exceeds a threshold distance. The method further includes generating an estimated path traveled by the mobile computing device using (1) the point on the motion-data trace of the path used for calculating the distance associated with each of the at least one location point and (2) the received location point for each of the sequence of location points whose associated distance is at or within the threshold distance.

BACKGROUND

A transportation management system facilitates rides for users usingservice vehicles, which may be human operated or autonomous. During aride, the vehicle may make many turns to navigate to its destination.The transportation management system may receive information about theride from the vehicle or from a computing device associated with adriver of the vehicle to track the vehicle as it provides transportationto users. Traditional transportation matching systems rely on GlobalPositioning System (GPS) data from a computing device (e.g., smartphone)of a ride provider or ride requestor inside a vehicle to determine thevehicle's location and to estimate the path traveled by the vehicle. Forexample, GPS data on the requestor device or provider device may be usedto determine a vehicle's location and to estimate the path traveled bythe vehicle. However, GPS data can be noisy and is not accurate enoughfor some applications of a transportation management system.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 illustrates an example path traveled by a vehicle along withexample location data for the vehicle.

FIG. 2 illustrates an example mobile computing device and an examplethree-dimensional coordinate system.

FIG. 3 illustrates an example representation of motion data for a mobilecomputing device.

FIG. 4 illustrates an example method for determining the positions ofmotion units during a turn of a vehicle for plotting on a digital map.

FIG. 5 illustrates an example representation of motion data and anexample representation of location data for a mobile computing device.

FIG. 6 illustrates an example turn trajectory based on example motiondata for a mobile computing device.

FIG. 7 illustrates several example motion-data traces of paths thatseveral vehicles have taken in an example location.

FIG. 8 illustrates an example method for generating an estimated pathtraveled by a computing device using at least part of a motion-datatrace of a path and received location points.

FIG. 9 illustrates an example block diagram of a transportationmanagement environment.

FIG. 10 illustrates an example block diagram of a transportationmanagement environment for matching ride requestors with autonomousvehicles.

FIG. 11 illustrates an example of a computing system.

DESCRIPTION OF EXAMPLE EMBODIMENTS

In the following description, various embodiments will be described. Forpurposes of explanation, specific configurations and details are setforth in order to provide a thorough understanding of the embodiments.However, it will also be apparent to one skilled in the art that theembodiments may be practiced without the specific details. Furthermore,well-known features may be omitted or simplified in order not to obscurethe embodiment being described. In addition, the embodiments disclosedherein are only examples, and the scope of this disclosure is notlimited to them. Particular embodiments may include all, some, or noneof the components, elements, features, functions, operations, or stepsof the embodiments disclosed above. Embodiments according to theinvention are in particular disclosed in the attached claims directed toa method, a storage medium, a system and a computer program product,wherein any feature mentioned in one claim category, e.g., method, canbe claimed in another claim category, e.g., system, as well. Thedependencies or references back in the attached claims are chosen forformal reasons only. However, any subject matter resulting from adeliberate reference back to any previous claims (in particular multipledependencies) can be claimed as well, so that any combination of claimsand the features thereof are disclosed and can be claimed regardless ofthe dependencies chosen in the attached claims. The subject-matter whichcan be claimed comprises not only the combinations of features as setout in the attached claims but also any other combination of features inthe claims, wherein each feature mentioned in the claims can be combinedwith any other feature or combination of other features in the claims.Furthermore, any of the embodiments and features described or depictedherein can be claimed in a separate claim and/or in any combination withany embodiment or feature described or depicted herein or with any ofthe features of the attached claims.

Traditional transportation matching systems rely on Global PositioningSystem (GPS) data from a provider computing device (e.g., smartphone)inside a vehicle (e.g., the vehicle providing a ride to a user) todetermine the vehicle's location and to estimate the path traveled bythe vehicle. GPS data from such computing devices is typically accurateto within four to eight meters when the computing device is experiencinggood connectivity. This is sufficient for general navigation purposeswhen the vehicle is operated by a human driver. However, using such GPSdata is insufficient in two common scenarios: (1) when the computingdevice experiences poor GPS connectivity, and (2) when the vehicle isoperated by an autonomous navigation system instead of a human driver.For example, poor connectivity may occur in dense cities with many tallbuildings (e.g., NYC, Chicago, Los Angeles, Beijing, Dubai), in tunnelsor when otherwise underground, and in areas where the geography of theterrain impacts the connectivity (e.g., canyons, steep mountain areas,etc.). In these locations, GPS connectivity may be poor due to GPSsignals being blocked by the myriad tall buildings, geographic features(e.g., tress, canyons, etc.), and/or earth and soil surrounding thecomputing device, respectively. Further, GPS data may not besufficiently accurate for successful navigation of an autonomousvehicle. For example, autonomous-vehicle navigation may require locationaccuracy that is more precise than what GPS can offer as the vehicle mayneed to know within inches or centimeters where the vehicle should belocated, turning, etc. in order to safely navigate without a driver.

For example, FIG. 1 illustrates an example path 120 traveled by avehicle 110 along with example location points 130 for the vehicle wherethe vehicle is in a dense urban environment with poor GPS connectivity.The location points 130 may be obtained from location data (e.g., GPSdata from a GPS unit on a mobile computing device inside the vehicle).The path 120 may represent a path traveled by the vehicle as it makes aleft turn through an example intersection. As illustrated by the examplelocation points 130, at least some of the location points 130 mayinaccurately portray the vehicle's position. This may lead to otherinaccuracies, such as inaccuracies in distance traveled, time todestination, fare to charge, and other metrics that may be useful tousers of the transportation management system as well as to thetransportation management system itself.

As a solution to the above problem, the transportation management systemmay rely on other sensor data from the provider or requestor computingdevices (or both) in place of or in addition to the location data sentby the mobile computing device in order to obtain and/or determine amore granular and accurate location of the vehicle and/or thecorresponding computing devices. The sensor data may be obtained fromsensors on the computing device, and may include gyroscope data,accelerometer data, barometer sensor data, compass data or any othersuitable sensor data. The mobile computing device may be equipped with agyroscope, which measures the rate at which the device rotates around aspatial axis. Many devices have a three-axis gyroscope, which deliversrotation values in each of the three axes shown in FIG. 2. Rotationvalues may be measured in radians per second around each given axis.Rotation values may be positive or negative depending on the directionof rotation. The rotation data may be used to determine how much thevehicle has turned within a given timeframe. As an example and not byway of limitation, the gyroscope data may be used to determine that acar has turned 0.3 radians within a timeframe of one second.

FIG. 2 illustrates an example mobile computing device and an examplethree-dimensional coordinate system. When a vehicle is in use, it isassumed that the computing device is fixed relative to the vehicle. Ifthe vehicle is being operated by a human driver, the driver's mobilecomputing device may be mounted to, for example, the dashboard of thevehicle. If the service device is an autonomous navigation vehicle, thecomputing device may be a device within the autonomous vehicle'snavigation system or other suitable computing system associated with theautonomous vehicle. In either case, the computing device with theappropriate sensors (e.g., gyroscope, accelerometer, barometer) may befixed relative to the vehicle. In many cases, the mobile computingdevice may not be fixed in a perfectly vertical orientation; that is,the device may be tilted at an angle (as is illustrated in FIG. 2) sothat the screen may be more easily viewed by the driver. Although aparticular computing device is shown in FIG. 2 (i.e., a smartphone),this disclosure contemplates any suitable computing device orcombination of computing devices that are capable of performing themethods discussed herein. As an example and not by way of limitation,the computing device may be built into the vehicle (e.g., as part of anavigation system). If the vehicle's computing device is equipped with agyroscope, accelerometer, barometer, or any other relevant components,the methods discussed herein may be performed primarily by the vehicle'scomputing device. In particular embodiments, the computing device thatis built into the vehicle may only have GPS capabilities. For example,in such a scenario, the GPS data (e.g., location points) may be measuredby the vehicle's computing device and the motion units may be measuredby a computing device of the provider or requestor.

Software installed on the computing device (e.g., smartphone) may usethe gyroscope data to track the rotation about the vertical axis (e.g.,axis that is aligned with the gravitational force) for a particular timewindow (e.g., 5 seconds). To track its rotation about the vertical axis,the device may perform three steps: (1) rotate the rotation readingsfrom the gyroscope to a frame in which the measured gravity vectorpoints along the vertical axis; (2) record the rotation about thevertical axis that occurred during several sub-windows of the specifiedtime window; and (3) integrate the rotation over time using numericalquadrature to produce a total turn for the specified time window. Inparticular embodiments, to orient its gyroscope data with the verticalaxis, the computing device may sense the direction of gravity (e.g.,using accelerometer readings). The direction of gravity may berepresented as a three-dimensional gravity vector. The device maymeasure gravity with respect to its own coordinate system, so themeasured gravity vector may be pointed in any direction relative to thedevice's coordinate system. The computing device may calculate thedifference between the gravity vector and the vertical axis. Forexample, if the phone is oriented in a vertical position, the measuredgravity vector may already be (0, 0, −1) and therefore is aligned withthe vertical axis and there would be no difference between the two.However, if the phone is oriented at an angle of 45 degrees relative tothe vertical axis, the gravity vector will still point straight down,but since the gravity vector is measured in the device's own coordinatesystem, the gravity vector may be represented by, e.g., (1, 1, −1).

In particular embodiments, the device may isolate its rotation dataabout the vertical axis. The device's gyroscope may measure rotationdata about the x-axis of the device's coordinate space, rotation dataabout its y-axis, and rotation data about its z-axis. For each set ofrotation data measured by the gyroscope, there may an associated gravityvector measured at substantially the same time. In particularembodiments, the rotation data and the gravity vector are representedwithin the device's coordinate system. To isolate the rotation data ofthe device about the gravity vector, the rotation data about the threeaxes may be rotated in a manner that would cause the gravity vector tobe aligned with the vertical axis (e.g., negative z-axis) if the gravityvector undergoes a similar rotation. The relative relationship betweenthe original rotation data and the gravity vector would be the same asthe relative relationship between the rotated rotation data and thevertical axis (to which the rotated gravity vector is aligned). Doing sowould simplify the computation for rotation data about the gravityvector.

Once the rotation amount for causing the gravity vector to be alignedwith the vertical axis is determined, that rotation amount may be usedto rotate the rotational data from the gyroscope, as discussed above.Then, the device's rotation about the vertical axis may be determinedand recorded. Sensor readings may be taken at regular intervalscorresponding to each sub-window of time. The intervals may be anysuitable length, including 1 reading per second, 10 readings second, or50 readings per second. Using a gyroscope and optionally a compassinstalled on the computing device, the device may determine the degreeof rotation about the gravity vector at each sub-window of time. Forexample, if a specified window of time is five seconds and eachsub-window lasts 1 second, the window will have 5 sub-windows: onesub-window for each second. At the beginning (or, alternatively, theend, middle, or any other suitable point) of each sub-window, thecomputing device may measure the rotation about the vertical axis thathas occurred since the last sub-window. Other sensor measurements may betaken at each sub-window as well, including GPS coordinates, barometerdata, accelerometer data, or any other suitable data.

The vertical axis (e.g., z-axis in FIG. 2, which the gravity vector maybe rotated to align with) may be the only axis about which rotation ismeasured because a vehicle only turns left or right. There may be no orvery minimal change about the other two axes (e.g., there may be nochange in the pitch or roll of the vehicle). In particular embodiments,once the rotation about the vertical axis at each sub-window has beenrecorded, the computing device may integrate the rotation data over timeby numerical quadrature (e.g., numerical integration) to produce a totalturn for the specified time window. In particular embodiments, numericalquadrature may be implemented using the trapezoidal rule. Thetrapezoidal rule is a method for approximating a definite integral usinglinear approximations. An area under a curve is divided into severalpartitions, and each partition is approximated as a trapezoid. The areaof each trapezoid is computed and summed with the areas of all thetrapezoids under the curve. Using this method, the area under the curvecan be approximated without expending excessive computing resources. Inparticular embodiments related to this disclosure, the area under thecurve may be the amount the computing device has rotated about thevertical axis during the entire time window. The partitions may be thesub-windows, and the trapezoids may be the amount the computing devicehas rotated about the vertical axis during each sub-window. Bycalculating the amount of rotation during each sub-window and thensumming the rotations, the computing device may determine how much thecomputing device has rotated during the entire time window. Accordingly,the mobile device may be configured to determine an amount of rotationabout a z-axis and report the amount of rotation as a turn angle sincethe last reported turn angle.

In particular embodiments, the computing device may send data to thetransportation management system. The data sent to the transportationmanagement system may include location points (e.g., GPS data),gyroscope data, accelerometer data, barometer data, and any othersuitable type of data. The data may be sent in packets that includemultiple data units. A data unit may include sensor data measurementsfor a specific period (e.g., 1 second). As an example and not by way oflimitation, a data packet may include five data units that eachcorresponds to one second of time. Thus, a data packet may correspond toa time window (e.g., 5 seconds) and each data unit may correspond to asub-window (e.g., 1 second). Sending the data units in packets of dataunits may help reduce network traffic. The transportation managementsystem may be managing hundreds or thousands of vehicles at any giventime, so the volume of data transmitted from each computing device maybe a strain on the system's servers. Transmitting multiple data units atonce in packets may reduce the volume of information that is transmittedto the transportation management system, which may in turn reduce strainon the system.

As an example and not by way of limitation, the sensors on the computingdevice may sample at a high rate, such as 50 Hz. This means that thesensors may take 50 samples per second. One second may be a sub-window.Receiving and processing 50 data points per second may be too much for aserver that is receiving data from thousands of devices. To reduce theload, the 50 samples may be reduced to a single data unit. The data unitmay summarize or contain information about each of the 50 samples thatwere taken during the sub-window. Instead of sending 50 data points, thecomputing device may send the single data unit to the server. Inparticular embodiments, multiple data units may be contained in a datapacket (as discussed above). For example, a data packet may include fivedata units, which may each include data from 50 samples taken duringeach sub-window.

Each data unit may contain information about the computing device forits corresponding second of time. For example, the data unit may includeGPS coordinates that indicate the device's location for thecorresponding second, gyroscope data that indicates a delta turn anglefor the corresponding second, accelerometer data that indicates theaverage acceleration of the computing device for the correspondingsecond, barometer data that indicates the elevation of the computingdevice for the corresponding second, and any other suitable information.Accordingly, the mobile computing device may be equipped with anaccelerometer and a barometer and may report readings associated withthese sensors along with the gyroscope and/or GPS location readings. Anaccelerometer is an electromechanical device used to measureacceleration forces. The accelerometer can measure the accelerationapplied to the mobile computing device, for example, when the vehicleaccelerates or brakes. The mobile computing device may also be equippedwith a barometer. A barometer may provide data indicating the elevationof the mobile computing device based on measured air pressure.

For example, a set of example data packet information is summarized inTable 1 below. The column titled “GPS Data” may include location points(e.g., coordinates) and the three columns labeled “Gyroscope Data,”“Accelerometer Data,” and “Barometer Data” may include motion data(e.g., gyroscope data, accelerometer data) or any other suitable type ofdata (e.g., elevation data as measured by a barometer or other suitableinstrument on the computing device).

TABLE 1 Example Data Packet Information Gyroscope Data AccelerometerElevation Time GPS Data (delta turn angle) Data Data 1 41.40338, .314RAD 3.24 m/s² 29.70 Hg 2.17403 2 41.41245, .299 RAD 2.56 m/s² 29.71 Hg2.20551 3 41.50334, .321 RAD 1.98 m/s² 29.70 Hg 2.29129 4 41.46398, .315RAD 0.54 m/s² 29.72 Hg 2.34656 5 41.99834, .309 RAD −0.72 m/s²   29.70Hg 2.45963

FIG. 3 illustrates an example representation of motion data for a mobilecomputing device. Each circle represents a motion unit for a differenttime period. For example, circle 311 represents the motion unit for timet=0s, circle 312 represents the motion unit for time t=1s, circle 313represents the motion unit for time t=2s, and so on. As discussed above,each motion unit may include information about the motion of thecomputing device for its respective time period. Each motion unit mayadditionally include a velocity and a heading. As an example and not byway of limitation the motion unit represented by circle 311 may have aheading 320 and a velocity of 0 mph. Alternatively or in addition, theheading may be determined based on the vehicle's trajectory asdetermined from GPS data over a period of time. GPS data may stillprovide a reliable heading even if it is noisy. The heading may bethought of as an arrow pointing out of the back of the computing deviceif the device is a smartphone. For example, if the smartphone is mountedon the dashboard of the vehicle, the heading may point out toward thefront windshield. With reference to FIG. 2, the heading may point alongthe positive Y axis (e.g., out from the back of the smartphone) if thesmartphone is mounted to the dashboard and is facing the vehicle cabin.The heading may be used to determine the direction that the vehicle ispointed. For example, if the vehicle is pointed north, the heading mayalso be pointing north. If the computing device is mounted at an angle,the transportation management system may detect this and account forthis when determining the heading of the motion unit. For example, ifthe computing device is tilted toward the driver at an angle of 15degrees, the transportation management system can determine this whenthe vehicle is driving in a straight line. Determining the velocityassociated with the motion unit is discussed below.

The transportation management system (or, alternatively, softwaredownloaded from the transportation management system and installed onthe computing device) may determine a location for each motion unitbased on one or more of the gyroscope data, the accelerometer data, andthe barometer data. For the sake of simplicity, this disclosure willdiscuss the methods as being performed by a transportation managementsystem, but this disclosure contemplates the methods discussed herein asbeing performed by any suitable computing device or system, includingthe computing device associated with the vehicle (e.g., the driver'scomputing device or a computing device of the autonomous vehicle, ifapplicable), or a computing device associated with the user. The motionunits may be plotted on a digital map at their determined locations, asshown in FIG. 3.

FIG. 4 illustrates an example method 400 for determining the positionsof motion units during a turn of a vehicle for plotting on a digitalmap. The transportation management system may be particularly interestedin turns that the vehicle makes because turning may affect routingprovided by the transportation management system, estimated time ofarrival (ETA) for a vehicle to a requestor, may indicate that a streetexists where the turn is occurring, and any other relevant reason to thetransportation management system. Accordingly, embodiments may determinewhether a vehicle is turning using the motion data received from thecomputing device. Additionally or alternatively, embodiments may userouting information to determine when turns are upcoming and ensure thatthe received motion data is consistent with the routing information.

If the vehicle is driving straight, the gyroscope data will not change(or will change minimally) from one motion unit to the next and thus,the delta turn angle will be below a threshold angle. Turning mayinclude right or left turns in an intersection, lane changes, U-turns,or any other type of turn.

The method may begin at step 410, where the transportation managementsystem receives an initial motion unit from a computing device. Theinitial motion unit may be part of a data packet, as discussed above.The initial motion unit may include gyroscope data which indicates adelta turn angle. The delta turn angle may be a measure of how much thecomputing device has rotated about the vertical axis since the precedingmotion unit was measured. As an example and not by way of limitation,the delta turn angle for a motion unit at time t=2 may be 0.25 radians.This means that the computing device has rotated 0.25 radians since themotion unit at time t=1 was measured.

At step 420, the transportation management system may determine whetherthe delta turn angle is greater than a threshold angle. The thresholdangle may be selected such that it is small enough to capture turnangles for typical street geographies (e.g., right turns, left turns,forks in a road, etc.) but not so small that, for example, as a vehicleshifts into a new lane, the shift would be captured as a turn when thevehicle is merely moving straight and veers off the same direction for amoment. This determination may be used to determine whether the vehicleis beginning to turn. If the delta turn angle is greater than thethreshold angle, the method proceeds to step 430.

At step 430, the transportation management system determines theposition and velocity of the initial motion unit. Determining theposition and velocity of the initial motion unit may be done using dataother than the motion data. This is because the motion data may onlyprovide information relative to itself and other motion units but notrelative to the surrounding geography. In other words, a second motionunit may include information about its position and velocity relative toa first motion unit, but a first motion unit by itself may not includeany reference point by which its location or velocity may be determined.Thus, determining the position and velocity of the initial motion unitmay involve accessing a source of data other than the motion data. Thissource may be GPS data, sensor data, any other suitable form of data, acombination of the above data, or a combination of GPS data, sensordata, and motion data. As an example and not by way of limitation, GPSdata may indicate a position and velocity for the computing device (and,by extension, the vehicle). However, as stated above, the GPS data maybe unreliable in certain circumstances. Thus, the transportationmanagement system may further rely on other types of data, such assensor data, accelerometer data, or other suitable types of data. Forexample, sensor data, if available, may indicate that a curb is locatedtwelve feet away from the vehicle. The GPS data may indicate that thevehicle's velocity is 0 mph. Accelerometer data may confirm the GPSvelocity by indicating that no movement has occurred for the lastfifteen seconds. From the accelerometer data, it may be inferred thatthe vehicle is stopped. From the other forms of data, it may bedetermined that the vehicle is in the leftmost lane of an intersection.

At step 440, the transportation management system receives a subsequentmotion unit from the computing device. Note that this subsequent motionunit may be received concurrently with the initial motion unit in thesame data packet or in a subsequent data packet. The subsequent motionunit may include the same categories of information as the initialmotion unit. At step 450, the transportation management systemdetermines whether the delta turn angle for the subsequent motion unitis greater than a threshold angle. This threshold angle may be the sameas or different than the threshold angle of step 420. If the delta turnangle for the subsequent motion unit is greater than or equal to thethreshold angle, the method proceeds to step 460.

If the delta turn angle is smaller than the threshold angle, the methodmay end at step 470, because a small turn angle suggests that thevehicle has completed the turn. If the delta turn angle is greater thanthe threshold turn angle, the method proceeds to step 460, where thetransportation management system determines the position and velocity ofthe subsequent motion unit. The position of the subsequent motion unitmay be determined using any suitable method using the motion data thatis available in association with the subsequent motion unit. Asdiscussed above, the motion data that is included with a motion unitincludes (1) gyroscope data, which indicates how much the computingdevice has rotated since the data in the preceding motion unit wasmeasured; (2) accelerometer data, which indicates an averageacceleration since the data in the preceding motion unit was measured;and/or (3) barometer data, which may be used to determine the elevationof the computing device.

One method suitable for determining the position and velocity of thesubsequent motion unit is to determine a vector that has a direction anda magnitude for the subsequent motion unit. The direction of the vectormay be determined using the delta turn angle. As an example and not byway of limitation, the delta turn angle for the subsequent motion unitmay be 0.20 radians. The direction of the vector may be 0.20 radians tothe left of the heading of the preceding (e.g., initial) motion unit. Ifthe delta turn angle is negative, the direction may be to the right ofthe heading of the preceding motion unit. The magnitude of the vectormay represent the displacement of the computing device since the data ofthe preceding motion unit was measured and may be calculated using anysuitable method, including the classical Newtonian physics equationd=vt+½at², where d is the displacement of the computing device since thepreceding motion unit, v is the velocity of the preceding motion unit, ais the average acceleration since the preceding motion unit, and t isthe time that has passed since the preceding motion unit. As an exampleand not by way of limitation, if the velocity of the initial motion unitis 0 mph, the time between the initial motion unit and the firstsubsequent motion unit is 1 second, and the average acceleration duringthat 1 second is 4.1 m/s², the displacement d may be calculated to be2.05 meters. If the delta turn angle is 0.20 radians, the location ofthe first subsequent motion unit may be 2.05 meters from the location ofthe initial motion unit at an angle of 0.20 radians to the left of theheading of the initial motion unit. Steps 440 through 460 are to berepeated until the delta turn angle is smaller than the threshold angle,at which point the method may end. Once the positions of each motionunit are determined, they may be plotted on a digital map as circles, asshown in FIG. 3.

In particular embodiments, the transportation management system maygenerate a motion-data trace of a path by connecting the plottedcircles. The motion-data trace of the path may represent the path thatthe computing device traveled as measured by one or more sensors on thecomputing device and processed by either the computing device or thetransportation management system. This representation may moreaccurately estimate the actual path of the computing device than thelocation points provided by the GPS data. An example of the pathgenerated by the transportation management system is illustrated by thelines that connect the circles of FIG. 3. In particular embodiments, thetransportation management system may use the motion-data trace of thepath to determine a distance traveled by the vehicle. The transportationmanagement system may determine the distance traveled by the vehicle bysumming the magnitudes of the vectors associated with each motion unit.As an example and not by way of limitation, there may be five motionunits in a sequence of motion units similar to those of FIG. 3. Theirrespective vectors may have magnitudes of 1.83 m, 2.05 m, 1.90 m, 2.11m, and 1.79 m. The distance traveled by the computing device for thearea corresponding to these motion units may be1.83+2.05+1.90+2.11+1.79=9.68 meters. In many cases, this method ofcalculating the distance traveled by the vehicle may be more accuratethan using GPS data to calculate the distance traveled by the vehicle.In particular embodiments, the transportation management system maycombine the above method with GPS data to calculate the distance avehicle travels. As an example and not by way of limitation, thetransportation management system may use GPS data to calculate thedistance traveled when GPS data is reliable, but when GPS data isunreliable, the transportation management system may instead use the sumof the motion unit vectors, as described above. Determining when GPSdata is reliable or not is discussed below.

FIG. 5 illustrates an example representation of motion data as motionunits 510 and an example representation of location data as locationpoints 520 for a mobile computing device. The motion-data trace of thepath may be lines 530 that connect each motion unit 510. In particularembodiments, the location points 520 are gathered concurrently with themotion data by the computing device. In particular embodiments, thetransportation management system may determine that at least one of thelocation points 520 is beyond a threshold distance from the motion-datatrace of the path (e.g., location point 521). The transportationmanagement system may make this determination by measuring the distancebetween each location point 520 and a point on the motion-data trace ofthe path represented by lines 530. If there is no point on themotion-data trace of the path that is within a threshold distance 540from the location point, the transportation management system maydetermine that the location point is erroneous.

In some embodiments, the threshold distance may be selected by thetransportation management system such that significantly inaccurate orerrant GPS locations will be identified but typical fluctuations in GPSlocations may be within the threshold. For example, GPS locations maytypically fluctuate off of a traveled path by a small amount (e.g.,within a couple feet) in areas with strong GPS connectivity and thisfluctuation may not drastically affect the location determinations ofthe transportation management system. However, as described above,errant GPS locations may be 1 meter, 5 meters, or 50 meters off of anactual location of a computing device. Accordingly, in some embodiments,the threshold distance may be set at 1 meter, 2 meters, and/or any otherrelevant distance depending on the level of accuracy desired by thetransportation management system.

In particular embodiments, the transportation management system maymeasure the distance between each motion unit 510 and a particularlocation point (e.g., location point 521). If there is no motion unitwithin threshold distance 540 from the location point, thetransportation management system may determine that the location pointis erroneous. As a result, the transportation management system mayremove the location point from being used for location purposes.Removing the location point from being used for location purposes maynot necessarily mean deleting the location point from a data store(although that could be what happens). Rather, removing the locationpoint may mean that the transportation management system does not usethe location point when: (1) determining the location of the vehicle,(2) determining the distance traveled by the vehicle, (3) generating abehavioral map (discussed below), (4) determining ride fare, (5)generating navigation instructions, or (6) performing any other actionthat relies on location accuracy.

FIG. 6 illustrates an example turn trajectory 610 based on examplemotion data for a mobile computing device. In particular embodiments,the transportation management system determines turn trajectory 610based on the sequence of motion units with delta turn angles (e.g., themotion units illustrated by circles in FIG. 3). The turn trajectory 610may be determined by smoothing the motion-data trace of the path madefrom connecting the circles corresponding to the motion units. The turntrajectory 610 may need to cover a particular horizontal distance 620 aswell as a particular vertical distance 630. The turn trajectory 610 maybe created from a single motion-data trace of a single path or may bemade from a several motion-data traces of paths traveled by severalvehicles. This will be discussed further below. In particularembodiments, the turn trajectory 610 may be provided as a projected turntrajectory to an autonomous vehicle for use in autonomous navigation. Inparticular embodiments, the turn trajectory 610 may be made from acomposite of one or more points of the motion-data trace of the path andthe received location points. As an example and not by way oflimitation, a received location point may be located beyond a thresholddistance from a point on the motion-data trace of the path. The point onthe motion-data trace of the path may be the closest point on themotion-data trace of the path to the received location point, or thepoint on the motion-data trace of the path may correspond to thereceived location point. If the received location point is locatedbeyond the threshold distance from the point on the motion-data trace ofthe path, the transportation management system may generate the turntrajectory 610 using (1) the point on the motion-data trace of the pathused for calculating the distance associated with each of the at leastone location point and (2) the received location point for each of thesequence of location points whose associated distance is at or withinthe threshold distance.

FIG. 7 illustrates several example motion-data traces of paths 710 thatseveral vehicles have taken in an example location. These motion-datatraces of paths 710 may have been generated using the methods describedherein (e.g., the method of FIG. 4). Having several motion-data tracesof paths may be useful to the transportation management system becausethey show the paths that several vehicles have taken in a givenlocation, as indicated by the motion data. This may be usefulinformation in generating a “behavioral map” as well as in providing anautonomous vehicle with an average turn trajectory for a givenintersection. For example, an intersection may have a left turn lane, asis illustrated in FIG. 7. By analyzing how several human drivers havenavigated a left turn out of the left turn lane, the transportationmanagement system may determine an average path 720 that the drivershave taken for the intersection. The average path 720 may be determinedby averaging equivalent motion unit locations for each path.

As an example and not by way of limitation, each path for theintersection in FIG. 7 may be generated from six motion units. Thetransportation management system may analyze five paths (although morethan 5 are shown in FIG. 7). Assume the first motion unit for each ofthe five paths is determined to have the x-y coordinates as shown inTable 2. Averaging those coordinates produces a first average motionunit with x-y coordinates (0.19), (0.26). The transportation managementsystem may perform this averaging calculation for each set of motionunits for all the paths.

TABLE 2 Example x-y coordinates for first motion units of 5 paths PathNumber x-coordinate y-coordinate 1 0.31 0.22 2 −0.12 0.57 3 0.30 0.38 4−0.06 0.21 5 0.53 −0.09 Average 0.19 0.26

Once the average motion unit locations are determined, thetransportation management system may use this information to generate anaverage motion-data trace and an average turn trajectory and provide theaverage turn trajectory to an autonomous vehicle. The autonomous vehiclemay use the average turn trajectory as input for navigating the turnthrough the intersection. Turn trajectories and average turntrajectories may be generated for any number of intersections, corners,parking lots, or roads that an autonomous vehicle may negotiate whiledriving.

In particular embodiments, the transportation management system may usethe turn trajectories to improve high definition maps. High definitionmaps may be three-dimensional models of streets. As an example and notby way of limitation, the transportation management system may use oneor more turn trajectories for a specific intersection to ensure that thehigh definition map portrays the intersection with the properdimensions. For example, an intersection in the map may have a length offorty-two feet. But the average turn trajectory for that intersectionmay suggest that the intersection has a length of thirty-eight feet(e.g., the average turn trajectory is consistent with an intersectionwith a length of thirty-eight feet). The transportation managementsystem may take this information into account when refining theintersection's dimensions.

In particular embodiments, the transportation management system maygenerate a behavioral map using the motion data, the motion-data tracesof the paths, and/or the turn trajectories. A behavioral map may be amap of driver paths as measured by the computing devices and determinedby the transportation management system. The behavioral map may beoverlain on a digital street map and may contain paths that driverstypically drive. These paths may be the motion-data traces of the pathsor the turn trajectories. The transportation management system mayprovide the behavioral map to autonomous vehicles for navigationpurposes. The behavioral map may be used by a driver or an autonomousnavigation system to see how other drivers make a given turn (e.g., howsharp they turn, when they initiate the turn, which lane they enter whencompleting the turn).

FIG. 8 illustrates an example method 800 for generating an estimatedpath traveled by a computing device using at least part of a motion-datatrace of a path and received location points. The method may begin atstep 810, where the transportation management system receives motiondata and a sequence of location points from the mobile computing device,as discussed herein. At step 820, the transportation management systemmay determine a sequence of motion units from the motion data. Forexample, the motion units may be like those discussed with reference toFIGS. 2 and 3. At step 830, the transportation management system maydetermine a delta turn angle for each of the motion units, as discussedherein. At step 840, the transportation management system may determinea spacing between the motion unit and a previous motion unit, asdiscussed herein regarding the vector magnitude for the motion unit. Atstep 850, the transportation management system plots the motion unit ona digital map based on the spacing and the delta turn angle. This mayalso be done at least in part by determining the GPS coordinatesassociated with each location point and then determining thecorresponding location on the digital map. At step 860, thetransportation management system generates a motion-data trace of a paththat connects the plotted motion units, as discussed herein. At step870, the transportation management system determines that the distanceassociated with at least one location point in the sequence of locationspoints exceeds a threshold distance. This determination may be made bycalculating, for each location point in the sequence of location points,a distance between the location point and a point on the motion-datatrace of the path. As discussed above, the point on the motion-datatrace of the path may be the closest point on the motion-data trace ofthe path to the received location point, or the point on the motion-datatrace of the path may correspond to the received location point.

In particular embodiments, the determination of step 870 may be furthermade or alternatively made based on the GPS signal strength as the GPSdata is received by the computing device. The computing device may send,in conjunction with the location data, a report of the GPS signalstrength for the received location data. If the signal strength is belowa threshold strength, it may be determined that the GPS signal strengthis too weak to provide reliable GPS coordinates. Thus, the method ofFIG. 8 may further include receiving a signal strength associated withthe GPS of the mobile computing device, and determining that the signalstrength is below a threshold strength. Based on this information, thetransportation management system may make the determination that thetrace of the path represents the path traveled by the mobile computingdevice.

At step 880, the transportation management system generates an estimatedpath traveled by the mobile computing device using (1) the point on themotion-data trace of the path used for calculating the distanceassociated with each of the at least one location point and (2) thereceived location point for each of the sequence of location pointswhose associated distance is at or within the threshold distance. As anexample and not by way of limitation, the sequence of location pointsmay include a first location point and a second location point. Thedistance between the first location point and a corresponding point onthe motion-data trace of the path may be 5 meters. This may exceed thethreshold distance. The distance between the second location point and acorresponding point on the motion-data trace of the path may be 0.05meters. This may be at or within the threshold distance (and thus, maybe considered an accurate GPS location). As a result, the transportationmanagement system may discard (e.g., not use for localization) the firstlocation point because it is located beyond the threshold distance (andthus is considered inaccurate). On the other hand, the transportationmanagement system may use the second location point because it islocated at or within the threshold distance (and thus, is consideredaccurate enough to be used by the system). Then, when the transportationmanagement system generates an estimated path that represents the pathtraveled by the mobile computing device, the transportation managementsystem may not use the first location point but it may use the secondlocation point. Instead of using the first location point, thetransportation management system may use the point on the motion-datatrace of the path used for calculated the distance associated with thefirst location point (as the point on the motion-data trace is a moreaccurate estimate of the actual location of the mobile device than thereceived errant/inaccurate GPS location). Further, note that in someembodiments, once an inaccurate GPS location is determined, themotion-data trace locations may be used for the generated estimated pathtraveled by the computing device instead of any of the GPS locationdata.

Particular embodiments may repeat one or more steps of the method ofFIG. 8, where appropriate. Although this disclosure describes andillustrates particular steps of the method of FIG. 8 as occurring in aparticular order, this disclosure contemplates any suitable steps of themethod of FIG. 8 occurring in any suitable order. Moreover, althoughthis disclosure describes and illustrates an example method forgenerating an estimated path traveled by a computing device using atleast part of a motion-data trace of a path and received location pointsincluding the particular steps of the method of FIG. 8, this disclosurecontemplates any suitable method for generating an estimated pathtraveled by a computing device using at least part of a motion-datatrace of a path and received location points including any suitablesteps, which may include all, some, or none of the steps of the methodof FIG. 8, where appropriate. Furthermore, although this disclosuredescribes and illustrates particular components, devices, or systemscarrying out particular steps of the method of FIG. 8, this disclosurecontemplates any suitable combination of any suitable components,devices, or systems carrying out any suitable steps of the method ofFIG. 8.

FIG. 9 shows a transportation management environment 900, in accordancewith particular embodiments. For example, a transportation managementsystem 902 executing on one or more servers or distributed systems maybe configured to provide various services to ride requestors andproviders. In particular embodiments, the transportation managementsystem 902 may include software modules or applications, including,e.g., identity management services 904, location services 906, rideservices 908, and/or any other suitable services. Although a particularnumber of services are shown as being provided by system 902, more orfewer services may be provided in various embodiments. In addition,although these services are shown as being provided by the system 902,all or a portion of any of the services may be processed in adistributed fashion. For example, computations associated with a servicetask may be performed by a combination of the transportation managementsystem 902 (including any number of servers, databases, etc.), one ormore devices associated with the provider (e.g., devices integrated withthe managed vehicles 914, provider's computing devices 916 and tablets920, and transportation management vehicle devices 918), and/or one ormore devices associated with the ride requestor (e.g., the requestor'scomputing devices 924 and tablets 922). In particular embodiments, thetransportation management system 902 may include one or more generalpurpose computers, server computers, distributed computing systems,clustered computing systems, cloud-based computing systems, or any othercomputing systems or arrangements of computing systems. Thetransportation management system 902 may be configured to run any or allof the services and/or software applications described herein. Inparticular embodiments, the transportation management system 902 mayinclude an appropriate operating system as well as various serverapplications, such as web servers capable of handling hypertexttransport protocol (HTTP) requests, file transfer protocol (FTP)servers, database servers, etc.

In particular embodiments, identity management services 904 may beconfigured to, e.g., perform authorization services for requestors andproviders and manage their interactions and data with the transportationmanagement system 902. This may include, e.g., authenticating theidentity of providers and determining that they are authorized toprovide services through the transportation management system 902.Similarly, requestors' identities may be authenticated to determinewhether they are authorized to receive the requested services throughthe transportation management system 902. Identity management services904 may also manage and control access to provider and requestor datamaintained by the transportation management system 902, such as drivingand/or ride histories, vehicle data, personal data, preferences, usagepatterns as a ride provider and as a ride requestor, profile pictures,linked third-party accounts (e.g., credentials for music orentertainment services, social-networking systems, calendar systems,task-management systems, etc.) and any other associated information. Themanagement service 904 may also manage and control access toprovider/requestor data stored with and/or obtained from third-partysystems. For example, a requester or provider may grant thetransportation management system 902 access to a third-party email,calendar, or task management system (e.g., via the user's credentials).As another example, a requestor or provider may grant, through his/hermobile device (e.g., 916, 920, 922, and 924), a transportationapplication associated with the transportation management system 902access to data provided by other applications installed on the mobiledevice. Such data may be processed on the client and/or uploaded to thetransportation management system 902 for processing, if so desired.

In particular embodiments, the transportation management system 902 mayprovide location services 906, which may include navigation and/ortraffic management services and user interfaces. For example, thelocation services 906 may be responsible for querying devices associatedwith the provider (e.g., vehicle 914, computing device 916, tablet 920,transportation management vehicle device 918) and the requester (e.g.,computing device 924 and tablet 922) for their locations. The locationservices 906 may also be configured to track those devices to determinetheir relative proximities, generate relevant alerts (e.g., proximity iswithin a threshold distance), generate navigation recommendations, andany other location-based services.

In particular embodiments, the transportation management system 902 mayprovide ride services 908, which may include ride matching andmanagement services to connect a requestor to a provider. For example,after the identity of a ride requestor has been authenticated by theidentity management services module 904, the ride services module 908may attempt to match the requestor with one or more ride providers. Inparticular embodiments, the ride services module 908 may identify anappropriate provider using location data obtained from the locationservices module 906. The ride services module 908 may use the locationdata to identify providers who are geographically close to the requestor(e.g., within a certain threshold distance or travel time) and furtheridentify those who are a good match with the requestor. The rideservices module 908 may implement matching algorithms that scoreproviders based on, e.g.: preferences of providers and requestors;vehicle features, amenities, condition, and status; provider's preferredgeneral travel direction, range of travel, and availability; requestor'sorigination and destination locations, time constraints, and vehiclefeature needs; and any other pertinent information for matchingrequestors with providers. In particular embodiments, the ride services908 may use rule-based algorithms or machine-learning models formatching requestors and providers.

The transportation management system 902 may communicatively connect tovarious devices through networks 910 and 912. Networks 910, 912 mayinclude any combination of interconnected networks configured to sendand/or receive data communications using various communication protocolsand transmission technologies. In particular embodiments, networks 910,912 may include local area networks (LAN), wide-area network, and/or theInternet, and may support communication protocols such as transmissioncontrol protocol/Internet protocol (TCP/IP), Internet packet exchange(IPX), systems network architecture (SNA), and any other suitablenetwork protocols. In particular embodiments, data may be transmittedthrough networks 910, 912 using a mobile network (such as a mobiletelephone network, cellular network, satellite network, or anothermobile network), PSTNs (a public switched telephone networks), wiredcommunication protocols (e.g., USB, CAN), and/or wireless communicationprotocols (e.g., WLAN technologies implementing the IEEE 802.11 familyof standards, Bluetooth, Bluetooth Low Energy, NFC, Z-Wave, and ZigBee).In particular embodiments, networks 910, 912 may each include anycombination of networks described herein or known to one of ordinaryskill in the art.

In particular embodiments, devices within a vehicle may beinterconnected. For example, any combination of the following may becommunicatively connected: vehicle 914, provider computing device 916,provider tablet 920, transportation management vehicle device 918,requestor computing device 924, requestor tablet 922, and any otherdevice (e.g., smart watch, smart tags, etc.). For example, thetransportation management vehicle device 918 may be communicativelyconnected to the provider computing device 916 and/or the requestorcomputing device 924. The transportation management vehicle device 918may connect 926, 928 to those devices via any suitable communicationtechnology, including, e.g., WLAN technologies implementing the IEEE802.11 family of standards, Bluetooth, Bluetooth Low Energy, NFC,Z-Wave, ZigBee, and any other suitable short-range wirelesscommunication technology.

In particular embodiments, users may utilize and interface with one ormore services provided by the transportation management system 902 usingapplications executing on their respective computing devices (e.g., 914,916, 918, and/or 920), which may include mobile devices (e.g., aniPhone®, an iPad®, mobile telephone, tablet computer, a personal digitalassistant (PDA)), laptops, wearable devices (e.g., smart watch, smartglasses, head mounted displays, etc.), thin client devices, gamingconsoles, and any other computing devices. In particular embodiments,provider computing device 914 may be an add-on device to the vehicle,such as a vehicle navigation system, or a computing device that isintegrated with the vehicle, such as the management system of anautonomous vehicle. The computing device may run on any suitableoperating systems, such as Android®, iOS®, macOS®, Windows®, Linux®,UNIX®, or UNIX®-based or Linux®-based operating systems, or any othertype of operating system or firmware. The computing device may furtherbe configured to send and receive data over the Internet, short messageservice (SMS), email, and various other messaging applications and/orcommunication protocols. In particular embodiments, one or more softwareapplications may be installed on the computing device of a provider orrequestor, including an application associated with the transportationmanagement system 902. The transportation application may, for example,be distributed by an entity associated with the transportationmanagement system via any distribution channel, such as an online sourcefrom which applications may be downloaded and/or via physical media,such as CDs and DVDs. Additional third-party applications unassociatedwith the transportation management system may also be installed on thecomputing device. In particular embodiments, the transportationapplication may communicate or share data and resources with one or moreof the installed third-party applications.

FIG. 10 illustrates an example block diagram of a transportationmanagement environment for matching ride requestors with autonomousvehicles. In particular embodiments, the environment may include variouscomputing entities, such as a user computing device 1030 of a user 1001(e.g., a ride provider or requestor), a transportation management system1060, an autonomous vehicle 1040, and one or more third-party system1070. The computing entities may be communicatively connected over anysuitable network 1010. As an example and not by way of limitation, oneor more portions of network 1010 may include an ad hoc network, anextranet, a virtual private network (VPN), a local area network (LAN), awireless LAN (WLAN), a wide area network (WAN), a wireless WAN (WWAN), ametropolitan area network (MAN), a portion of the Internet, a portion ofPublic Switched Telephone Network (PSTN), a cellular network, or acombination of any of the above. In particular embodiments, any suitablenetwork arrangement and protocol enabling the computing entities tocommunicate with each other may be used. Although FIG. 10 illustrates asingle user device 1030, a single transportation management system 1060,a single vehicle 1040, a plurality of third-party systems 1070, and asingle network 1010, this disclosure contemplates any suitable number ofeach of these entities. As an example and not by way of limitation, thenetwork environment may include multiple users 1001, user devices 1030,transportation management systems 1060, autonomous-vehicles 1040,third-party systems 1070, and networks 1010.

The user device 1030, transportation management system 1060, autonomousvehicle 1040, and third-party system 1070 may be communicativelyconnected or co-located with each other in whole or in part. Thesecomputing entities may communicate via different transmissiontechnologies and network types. For example, the user device 1030 andthe vehicle 1040 may communicate with each other via a cable orshort-range wireless communication (e.g., Bluetooth, NFC, WI-FI, etc.),and together they may be connected to the Internet via a cellularnetwork that is accessible to either one of the devices (e.g., the userdevice 1030 may be a smartphone with LTE connection). The transportationmanagement system 1060 and third-party system 1070, on the other hand,may be connected to the Internet via their respective LAN/WLAN networksand Internet Service Providers (ISP). FIG. 10 illustrates transmissionlinks 1050 that connect user device 1030, autonomous vehicle 1040,transportation management system 1060, and third-party system 1070 tocommunication network 1010. This disclosure contemplates any suitabletransmission links 1050, including, e.g., wire connections (e.g., USB,Lightning, Digital Subscriber Line (DSL) or Data Over Cable ServiceInterface Specification (DOCSIS)), wireless connections (e.g., WI-FI,WiMAX, cellular, satellite, NFC, Bluetooth), optical connections (e.g.,Synchronous Optical Networking (SONET), Synchronous Digital Hierarchy(SDH)), any other wireless communication technologies, and anycombination thereof. In particular embodiments, one or more links 1050may connect to one or more networks 1010, which may include in part,e.g., ad-hoc network, the Intranet, extranet, VPN, LAN, WLAN, WAN, WWAN,MAN, PSTN, a cellular network, a satellite network, or any combinationthereof. The computing entities need not necessarily use the same typeof transmission link 1050. For example, the user device 1030 maycommunicate with the transportation management system via a cellularnetwork and the Internet, but communicate with the autonomous vehicle1040 via Bluetooth or a physical wire connection.

In particular embodiments, the transportation management system 1060 mayfulfill ride requests for one or more users 1001 by dispatching suitablevehicles. The transportation management system 1060 may receive anynumber of ride requests from any number of ride requestors 1001. Inparticular embodiments, a ride request from a ride requestor 1001 mayinclude an identifier that identifies the ride requestor in the system1060. The transportation management system 1060 may use the identifierto access and store the ride requestor's 1001 information, in accordancewith his/her privacy settings. The ride requestor's 1001 information maybe stored in one or more data stores (e.g., a relational databasesystem) associated with and accessible to the transportation managementsystem 1060. In particular embodiments, ride requestor information mayinclude profile information about a particular ride requestor 1001. Inparticular embodiments, the ride requestor 1001 may be associated withone or more categories or types, through which the ride requestor 1001may be associated with aggregate information about certain riderequestors of those categories or types. Ride information may include,for example, preferred pick-up and drop-off locations, drivingpreferences (e.g., safety comfort level, preferred speed, rates ofacceleration/deceleration, safety distance from other vehicles whentravelling at various speeds, route, etc.), entertainment preferencesand settings (e.g., preferred music genre or playlist, audio volume,display brightness, etc.), temperature settings, whether conversationwith the driver is welcomed, frequent destinations, historical ridingpatterns (e.g., time of day of travel, starting and ending locations,etc.), preferred language, age, gender, or any other suitableinformation. In particular embodiments, the transportation managementsystem 1060 may classify a user 1001 based on known information aboutthe user 1001 (e.g., using machine-learning classifiers), and use theclassification to retrieve relevant aggregate information associatedwith that class. For example, the system 1060 may classify a user 1001as a young adult and retrieve relevant aggregate information associatedwith young adults, such as the type of music generally preferred byyoung adults.

Transportation management system 1060 may also store and access rideinformation. Ride information may include locations related to the ride,traffic data, route options, optimal pick-up or drop-off locations forthe ride, or any other suitable information associated with a ride. Asan example and not by way of limitation, when the transportationmanagement system 1060 receives a request to travel from San FranciscoInternational Airport (SFO) to Palo Alto, Calif., the system 1060 mayaccess or generate any relevant ride information for this particularride request. The ride information may include, for example, preferredpick-up locations at SFO; alternate pick-up locations in the event thata pick-up location is incompatible with the ride requestor (e.g., theride requestor may be disabled and cannot access the pick-up location)or the pick-up location is otherwise unavailable due to construction,traffic congestion, changes in pick-up/drop-off rules, or any otherreason; one or more routes to navigate from SFO to Palo Alto; preferredoff-ramps for a type of user; or any other suitable informationassociated with the ride. In particular embodiments, portions of theride information may be based on historical data associated withhistorical rides facilitated by the system 1060. For example, historicaldata may include aggregate information generated based on past rideinformation, which may include any ride information described herein andtelemetry data collected by sensors in autonomous vehicles and/or userdevices. Historical data may be associated with a particular user (e.g.,that particular user's preferences, common routes, etc.), acategory/class of users (e.g., based on demographics), and/or all usersof the system 1060. For example, historical data specific to a singleuser may include information about past rides that particular user hastaken, including the locations at which the user is picked up anddropped off, music the user likes to listen to, traffic informationassociated with the rides, time of the day the user most often rides,and any other suitable information specific to the user. As anotherexample, historical data associated with a category/class of users mayinclude, e.g., common or popular ride preferences of users in thatcategory/class, such as teenagers preferring pop music, ride requestorswho frequently commute to the financial district may prefer to listen tothe news, etc. As yet another example, historical data associated withall users may include general usage trends, such as traffic and ridepatterns. Using historical data, the system 1060 in particularembodiments may predict and provide ride suggestions in response to aride request. In particular embodiments, the system 1060 may usemachine-learning, such as neural networks, regression algorithms,instance-based algorithms (e.g., k-Nearest Neighbor), decision-treealgorithms, Bayesian algorithms, clustering algorithms,association-rule-learning algorithms, deep-learning algorithms,dimensionality-reduction algorithms, ensemble algorithms, and any othersuitable machine-learning algorithms known to persons of ordinary skillin the art. The machine-learning models may be trained using anysuitable training algorithm, including supervised learning based onlabeled training data, unsupervised learning based on unlabeled trainingdata, and/or semi-supervised learning based on a mixture of labeled andunlabeled training data.

In particular embodiments, transportation management system 1060 mayinclude one or more server computers. Each server may be a unitaryserver or a distributed server spanning multiple computers or multipledatacenters. The servers may be of various types, such as, for exampleand without limitation, web server, news server, mail server, messageserver, advertising server, file server, application server, exchangeserver, database server, proxy server, another server suitable forperforming functions or processes described herein, or any combinationthereof. In particular embodiments, each server may include hardware,software, or embedded logic components or a combination of two or moresuch components for carrying out the appropriate functionalitiesimplemented or supported by the server. In particular embodiments,transportation management system 1060 may include one or more datastores. The data stores may be used to store various types ofinformation, such as ride information, ride requestor information, rideprovider information, historical information, third-party information,or any other suitable type of information. In particular embodiments,the information stored in the data stores may be organized according tospecific data structures. In particular embodiments, each data store maybe a relational, columnar, correlation, or any other suitable type ofdatabase system. Although this disclosure describes or illustratesparticular types of databases, this disclosure contemplates any suitabletypes of databases. Particular embodiments may provide interfaces thatenable a user device 1030 (which may belong to a ride requestor orprovider), a transportation management system 1060, vehicle system 1040,or a third-party system 1070 to process, transform, manage, retrieve,modify, add, or delete the information stored in the data store.

In particular embodiments, transportation management system 1060 mayinclude an authorization server (or any other suitable component(s))that allows users 1001 to opt-in to or opt-out of having theirinformation and actions logged, recorded, or sensed by transportationmanagement system 1060 or shared with other systems (e.g., third-partysystems 1070). In particular embodiments, a user 1001 may opt-in oropt-out by setting appropriate privacy settings. A privacy setting of auser may determine what information associated with the user may belogged, how information associated with the user may be logged, wheninformation associated with the user may be logged, who may loginformation associated with the user, whom information associated withthe user may be shared with, and for what purposes informationassociated with the user may be logged or shared. Authorization serversmay be used to enforce one or more privacy settings of the users 1001 oftransportation management system 1060 through blocking, data hashing,anonymization, or other suitable techniques as appropriate.

In particular embodiments, third-party system 1070 may be anetwork-addressable computing system that may provide HD maps or hos GPSmaps, customer reviews, music or content, weather information, or anyother suitable type of information. Third-party system 1070 maygenerate, store, receive, and send relevant data, such as, for example,map data, customer review data from a customer review website, weatherdata, or any other suitable type of data. Third-party system 1070 may beaccessed by the other computing entities of the network environmenteither directly or via network 1010. For example, user device 1030 mayaccess the third-party system 1070 via network 1010, or viatransportation management system 1060. In the latter case, ifcredentials are required to access the third-party system 1070, the user1001 may provide such information to the transportation managementsystem 1060, which may serve as a proxy for accessing content from thethird-party system 1070.

In particular embodiments, user device 1030 may be a mobile computingdevice such as a smartphone, tablet computer, or laptop computer. Userdevice 1030 may include one or more processors (e.g., CPU and/or GPU),memory, and storage. An operating system and applications may beinstalled on the user device 1030, such as, e.g., a transportationapplication associated with the transportation management system 1060,applications associated with third-party systems 1070, and applicationsassociated with the operating system. User device 1030 may includefunctionality for determining its location, direction, or orientation,based on integrated sensors such as GPS, compass, gyroscope, oraccelerometer. User device 1030 may also include wireless transceiversfor wireless communication and may support wireless communicationprotocols such as Bluetooth, near-field communication (NFC), infrared(IR) communication, WI-FI, and/or 2G/3G/4G/LTE mobile communicationstandard. User device 1030 may also include one or more cameras,scanners, touchscreens, microphones, speakers, and any other suitableinput-output devices.

In particular embodiments, the vehicle 1040 may be an autonomous vehicleand equipped with an array of sensors 1044, a navigation system 1046,and a ride-service computing device 1048. In particular embodiments, afleet of autonomous vehicles 1040 may be managed by the transportationmanagement system 1060. The fleet of autonomous vehicles 1040, in wholeor in part, may be owned by the entity associated with thetransportation management system 1060, or they may be owned by athird-party entity relative to the transportation management system1060. In either case, the transportation management system 1060 maycontrol the operations of the autonomous vehicles 1040, including, e.g.,dispatching select vehicles 1040 to fulfill ride requests, instructingthe vehicles 1040 to perform select operations (e.g., head to a servicecenter or charging/fueling station, pull over, stop immediately,self-diagnose, lock/unlock compartments, change music station, changetemperature, and any other suitable operations), and instructing thevehicles 1040 to enter select operation modes (e.g., operate normally,drive at a reduced speed, drive under the command of human operators,and any other suitable operational modes).

In particular embodiments, the autonomous vehicles 1040 may receive datafrom and transmit data to the transportation management system 1060 andthe third-party system 1070. Example of received data may include, e.g.,instructions, new software or software updates, maps, 3D models, trainedor untrained machine-learning models, location information (e.g.,location of the ride requestor, the autonomous vehicle 1040 itself,other autonomous vehicles 1040, and target destinations such as servicecenters), navigation information, traffic information, weatherinformation, entertainment content (e.g., music, video, and news) riderequestor information, ride information, and any other suitableinformation. Examples of data transmitted from the autonomous vehicle1040 may include, e.g., telemetry and sensor data,determinations/decisions based on such data, vehicle condition or state(e.g., battery/fuel level, tire and brake conditions, sensor condition,speed, odometer, etc.), location, navigation data, passenger inputs(e.g., through a user interface in the vehicle 1040, passengers maysend/receive data to the transportation management system 1060 and/orthird-party system 1070), and any other suitable data.

In particular embodiments, autonomous vehicles 1040 may also communicatewith each other as well as other traditional human-driven vehicles,including those managed and not managed by the transportation managementsystem 1060. For example, one vehicle 1040 may communicate with anothervehicle data regarding their respective location, condition, status,sensor reading, and any other suitable information. In particularembodiments, vehicle-to-vehicle communication may take place over directshort-range wireless connection (e.g., WI-FI, Bluetooth, NFC) and/orover a network (e.g., the Internet or via the transportation managementsystem 1060 or third-party system 1070).

In particular embodiments, an autonomous vehicle 1040 may obtain andprocess sensor/telemetry data. Such data may be captured by any suitablesensors. For example, the vehicle 1040 may have a Light Detection andRanging (LiDAR) sensor array of multiple LiDAR transceivers that areconfigured to rotate 360°, emitting pulsed laser light and measuring thereflected light from objects surrounding vehicle 1040. In particularembodiments, LiDAR transmitting signals may be steered by use of a gatedlight valve, which may be a MEMs device that directs a light beam usingthe principle of light diffraction. Such a device may not use a gimbaledmirror to steer light beams in 360° around the autonomous vehicle.Rather, the gated light valve may direct the light beam into one ofseveral optical fibers, which may be arranged such that the light beammay be directed to many discrete positions around the autonomousvehicle. Thus, data may be captured in 360° around the autonomousvehicle, but no rotating parts may be necessary. A LiDAR is an effectivesensor for measuring distances to targets, and as such may be used togenerate a three-dimensional (3D) model of the external environment ofthe autonomous vehicle 1040. As an example and not by way of limitation,the 3D model may represent the external environment including objectssuch as other cars, curbs, debris, objects, and pedestrians up to amaximum range of the sensor arrangement (e.g., 50, 100, or 200 meters).As another example, the autonomous vehicle 1040 may have optical cameraspointing in different directions. The cameras may be used for, e.g.,recognizing roads, lane markings, street signs, traffic lights, police,other vehicles, and any other visible objects of interest. To enable thevehicle 1040 to “see” at night, infrared cameras may be installed. Inparticular embodiments, the vehicle may be equipped with stereo visionfor, e.g., spotting hazards such as pedestrians or tree branches on theroad. As another example, the vehicle 1040 may have radars for, e.g.,detecting other vehicles and/or hazards afar. Furthermore, the vehicle1040 may have ultrasound equipment for, e.g., parking and obstacledetection. In addition to sensors enabling the vehicle 1040 to detect,measure, and understand the external world around it, the vehicle 1040may further be equipped with sensors for detecting and self-diagnosingthe vehicle's own state and condition. For example, the vehicle 1040 mayhave wheel sensors for, e.g., measuring velocity; global positioningsystem (GPS) for, e.g., determining the vehicle's current geolocation;and/or inertial measurement units, accelerometers, gyroscopes, and/orodometer systems for movement or motion detection. While the descriptionof these sensors provides particular examples of utility, one ofordinary skill in the art would appreciate that the utilities of thesensors are not limited to those examples. Further, while an example ofa utility may be described with respect to a particular type of sensor,it should be appreciated that the utility may be achieved using anycombination of sensors. For example, an autonomous vehicle 1040 maybuild a 3D model of its surrounding based on data from its LiDAR, radar,sonar, and cameras, along with a pre-generated map obtained from thetransportation management system 1060 or the third-party system 1070.Although sensors 1044 appear in a particular location on autonomousvehicle 1040 in FIG. 10, sensors 1044 may be located in any suitablelocation in or on autonomous vehicle 1040. Example locations for sensorsinclude the front and rear bumpers, the doors, the front windshield, onthe side panel, or any other suitable location.

In particular embodiments, the autonomous vehicle 1040 may be equippedwith a processing unit (e.g., one or more CPUs and GPUs), memory, andstorage. The vehicle 1040 may thus be equipped to perform a variety ofcomputational and processing tasks, including processing the sensordata, extracting useful information, and operating accordingly. Forexample, based on images captured by its cameras and a machine-visionmodel, the vehicle 1040 may identify particular types of objectscaptured by the images, such as pedestrians, other vehicles, lanes,curbs, and any other objects of interest.

In particular embodiments, the autonomous vehicle 1040 may have anavigation system 1046 responsible for safely navigating the autonomousvehicle 1040. In particular embodiments, the navigation system 1046 maytake as input any type of sensor data from, e.g., a Global PositioningSystem (GPS) module, inertial measurement unit (IMU), LiDAR sensors,optical cameras, radio frequency (RF) transceivers, or any othersuitable telemetry or sensory mechanisms. The navigation system 1046 mayalso utilize, e.g., map data, traffic data, accident reports, weatherreports, instructions, target destinations, and any other suitableinformation to determine navigation routes and particular drivingoperations (e.g., slowing down, speeding up, stopping, swerving, etc.).In particular embodiments, the navigation system 1046 may use itsdeterminations to control the vehicle 1040 to operate in prescribedmanners and to guide the autonomous vehicle 1040 to its destinationswithout colliding into other objects. Although the physical embodimentof the navigation system 1046 (e.g., the processing unit) appears in aparticular location on autonomous vehicle 1040 in FIG. 10, navigationsystem 1046 may be located in any suitable location in or on autonomousvehicle 1040. Example locations for navigation system 1046 includeinside the cabin or passenger compartment of autonomous vehicle 1040,near the engine/battery, near the front seats, rear seats, or in anyother suitable location.

In particular embodiments, the autonomous vehicle 1040 may be equippedwith a ride-service computing device 1048, which may be a tablet or anyother suitable device installed by transportation management system 1060to allow the user to interact with the autonomous vehicle 1040,transportation management system 1060, other users 1001, or third-partysystems 1070. In particular embodiments, installation of ride-servicecomputing device 1048 may be accomplished by placing the ride-servicecomputing device 1048 inside autonomous vehicle 1040, and configuring itto communicate with the vehicle 1040 via a wire or wireless connection(e.g., via Bluetooth). Although FIG. 10 illustrates a singleride-service computing device 1048 at a particular location inautonomous vehicle 1040, autonomous vehicle 1040 may include severalride-service computing devices 1048 in several different locationswithin the vehicle. As an example and not by way of limitation,autonomous vehicle 1040 may include four ride-service computing devices1048 located in the following places: one in front of the front-leftpassenger seat (e.g., driver's seat in traditional U.S. automobiles),one in front of the front-right passenger seat, one in front of each ofthe rear-left and rear-right passenger seats. In particular embodiments,ride-service computing device 1048 may be detachable from any componentof autonomous vehicle 1040. This may allow users to handle ride-servicecomputing device 1048 in a manner consistent with other tablet computingdevices. As an example and not by way of limitation, a user may moveride-service computing device 1048 to any location in the cabin orpassenger compartment of autonomous vehicle 1040, may hold ride-servicecomputing device 1048 in his/her lap, or handle ride-service computingdevice 1048 in any other suitable manner. Although this disclosuredescribes providing a particular computing device in a particularmanner, this disclosure contemplates providing any suitable computingdevice in any suitable manner.

FIG. 11 illustrates an example computer system 1100. In particularembodiments, one or more computer systems 1100 perform one or more stepsof one or more methods described or illustrated herein. In particularembodiments, one or more computer systems 1100 provide thefunctionalities described or illustrated herein. In particularembodiments, software running on one or more computer systems 1100performs one or more steps of one or more methods described orillustrated herein or provides the functionalities described orillustrated herein. Particular embodiments include one or more portionsof one or more computer systems 1100. Herein, a reference to a computersystem may encompass a computing device, and vice versa, whereappropriate. Moreover, a reference to a computer system may encompassone or more computer systems, where appropriate.

This disclosure contemplates any suitable number of computer systems1100. This disclosure contemplates computer system 1100 taking anysuitable physical form. As example and not by way of limitation,computer system 1100 may be an embedded computer system, asystem-on-chip (SOC), a single-board computer system (SBC) (such as, forexample, a computer-on-module (COM) or system-on-module (SOM)), adesktop computer system, a laptop or notebook computer system, aninteractive kiosk, a mainframe, a mesh of computer systems, a mobiletelephone, a personal digital assistant (PDA), a server, a tabletcomputer system, an augmented/virtual reality device, or a combinationof two or more of these. Where appropriate, computer system 1100 mayinclude one or more computer systems 1100; be unitary or distributed;span multiple locations; span multiple machines; span multiple datacenters; or reside in a cloud, which may include one or more cloudcomponents in one or more networks. Where appropriate, one or morecomputer systems 1100 may perform without substantial spatial ortemporal limitation one or more steps of one or more methods describedor illustrated herein. As an example and not by way of limitation, oneor more computer systems 1100 may perform in real time or in batch modeone or more steps of one or more methods described or illustratedherein. One or more computer systems 1100 may perform at different timesor at different locations one or more steps of one or more methodsdescribed or illustrated herein, where appropriate.

In particular embodiments, computer system 1100 includes a processor1102, memory 1104, storage 1106, an input/output (I/O) interface 1108, acommunication interface 1110, and a bus 1112. Although this disclosuredescribes and illustrates a particular computer system having aparticular number of particular components in a particular arrangement,this disclosure contemplates any suitable computer system having anysuitable number of any suitable components in any suitable arrangement.

In particular embodiments, processor 1102 includes hardware forexecuting instructions, such as those making up a computer program. Asan example and not by way of limitation, to execute instructions,processor 1102 may retrieve (or fetch) the instructions from an internalregister, an internal cache, memory 1104, or storage 1106; decode andexecute them; and then write one or more results to an internalregister, an internal cache, memory 1104, or storage 1106. In particularembodiments, processor 1102 may include one or more internal caches fordata, instructions, or addresses. This disclosure contemplates processor1102 including any suitable number of any suitable internal caches,where appropriate. As an example and not by way of limitation, processor1102 may include one or more instruction caches, one or more datacaches, and one or more translation lookaside buffers (TLBs).Instructions in the instruction caches may be copies of instructions inmemory 1104 or storage 1106, and the instruction caches may speed upretrieval of those instructions by processor 1102. Data in the datacaches may be copies of data in memory 1104 or storage 1106 that are tobe operated on by computer instructions; the results of previousinstructions executed by processor 1102 that are accessible tosubsequent instructions or for writing to memory 1104 or storage 1106;or any other suitable data. The data caches may speed up read or writeoperations by processor 1102. The TLBs may speed up virtual-addresstranslation for processor 1102. In particular embodiments, processor1102 may include one or more internal registers for data, instructions,or addresses. This disclosure contemplates processor 1102 including anysuitable number of any suitable internal registers, where appropriate.Where appropriate, processor 1102 may include one or more arithmeticlogic units (ALUs), be a multi-core processor, or include one or moreprocessors 1102. Although this disclosure describes and illustrates aparticular processor, this disclosure contemplates any suitableprocessor.

In particular embodiments, memory 1104 includes main memory for storinginstructions for processor 1102 to execute or data for processor 1102 tooperate on. As an example and not by way of limitation, computer system1100 may load instructions from storage 1106 or another source (such asanother computer system 1100) to memory 1104. Processor 1102 may thenload the instructions from memory 1104 to an internal register orinternal cache. To execute the instructions, processor 1102 may retrievethe instructions from the internal register or internal cache and decodethem. During or after execution of the instructions, processor 1102 maywrite one or more results (which may be intermediate or final results)to the internal register or internal cache. Processor 1102 may thenwrite one or more of those results to memory 1104. In particularembodiments, processor 1102 executes only instructions in one or moreinternal registers or internal caches or in memory 1104 (as opposed tostorage 1106 or elsewhere) and operates only on data in one or moreinternal registers or internal caches or in memory 1104 (as opposed tostorage 1106 or elsewhere). One or more memory buses (which may eachinclude an address bus and a data bus) may couple processor 1102 tomemory 1104. Bus 1112 may include one or more memory buses, as describedin further detail below. In particular embodiments, one or more memorymanagement units (MMUs) reside between processor 1102 and memory 1104and facilitate accesses to memory 1104 requested by processor 1102. Inparticular embodiments, memory 1104 includes random access memory (RAM).This RAM may be volatile memory, where appropriate. Where appropriate,this RAM may be dynamic RAM (DRAM) or static RAM (SRAM). Moreover, whereappropriate, this RAM may be single-ported or multi-ported RAM. Thisdisclosure contemplates any suitable RAM. Memory 1104 may include one ormore memories 1104, where appropriate. Although this disclosuredescribes and illustrates particular memory, this disclosurecontemplates any suitable memory.

In particular embodiments, storage 1106 includes mass storage for dataor instructions. As an example and not by way of limitation, storage1106 may include a hard disk drive (HDD), a floppy disk drive, flashmemory, an optical disc, a magneto-optical disc, magnetic tape, or aUniversal Serial Bus (USB) drive or a combination of two or more ofthese. Storage 1106 may include removable or non-removable (or fixed)media, where appropriate. Storage 1106 may be internal or external tocomputer system 1100, where appropriate. In particular embodiments,storage 1106 is non-volatile, solid-state memory. In particularembodiments, storage 1106 includes read-only memory (ROM). Whereappropriate, this ROM may be mask-programmed ROM, programmable ROM(PROM), erasable PROM (EPROM), electrically erasable PROM (EEPROM),electrically alterable ROM (EAROM), or flash memory or a combination oftwo or more of these. This disclosure contemplates mass storage 1106taking any suitable physical form. Storage 1106 may include one or morestorage control units facilitating communication between processor 1102and storage 1106, where appropriate. Where appropriate, storage 1106 mayinclude one or more storages 1106. Although this disclosure describesand illustrates particular storage, this disclosure contemplates anysuitable storage.

In particular embodiments, I/O interface 1108 includes hardware,software, or both, providing one or more interfaces for communicationbetween computer system 1100 and one or more I/O devices. Computersystem 1100 may include one or more of these I/O devices, whereappropriate. One or more of these I/O devices may enable communicationbetween a person and computer system 1100. As an example and not by wayof limitation, an I/O device may include a keyboard, keypad, microphone,monitor, mouse, printer, scanner, speaker, still camera, stylus, tablet,touch screen, trackball, video camera, another suitable I/O device or acombination of two or more of these. An I/O device may include one ormore sensors. This disclosure contemplates any suitable I/O devices andany suitable I/O interfaces 1108 for them. Where appropriate, I/Ointerface 1108 may include one or more device or software driversenabling processor 1102 to drive one or more of these I/O devices. I/Ointerface 1108 may include one or more I/O interfaces 1108, whereappropriate. Although this disclosure describes and illustrates aparticular I/O interface, this disclosure contemplates any suitable I/Ointerface.

In particular embodiments, communication interface 1110 includeshardware, software, or both providing one or more interfaces forcommunication (such as, for example, packet-based communication) betweencomputer system 1100 and one or more other computer systems 1100 or oneor more networks. As an example and not by way of limitation,communication interface 1110 may include a network interface controller(NIC) or network adapter for communicating with an Ethernet or any otherwire-based network or a wireless NIC (WNIC) or wireless adapter forcommunicating with a wireless network, such as a WI-FI network. Thisdisclosure contemplates any suitable network and any suitablecommunication interface 1110 for it. As an example and not by way oflimitation, computer system 1100 may communicate with an ad hoc network,a personal area network (PAN), a local area network (LAN), a wide areanetwork (WAN), a metropolitan area network (MAN), or one or moreportions of the Internet or a combination of two or more of these. Oneor more portions of one or more of these networks may be wired orwireless. As an example, computer system 1100 may communicate with awireless PAN (WPAN) (such as, for example, a Bluetooth WPAN), a WI-FInetwork, a WI-MAX network, a cellular telephone network (such as, forexample, a Global System for Mobile Communications (GSM) network), orany other suitable wireless network or a combination of two or more ofthese. Computer system 1100 may include any suitable communicationinterface 1110 for any of these networks, where appropriate.Communication interface 1110 may include one or more communicationinterfaces 1110, where appropriate. Although this disclosure describesand illustrates a particular communication interface, this disclosurecontemplates any suitable communication interface.

In particular embodiments, bus 1112 includes hardware, software, or bothcoupling components of computer system 1100 to each other. As an exampleand not by way of limitation, bus 1112 may include an AcceleratedGraphics Port (AGP) or any other graphics bus, an Enhanced IndustryStandard Architecture (EISA) bus, a front-side bus (FSB), aHYPERTRANSPORT (HT) interconnect, an Industry Standard Architecture(ISA) bus, an INFINIBAND interconnect, a low-pin-count (LPC) bus, amemory bus, a Micro Channel Architecture (MCA) bus, a PeripheralComponent Interconnect (PCI) bus, a PCI-Express (PCIe) bus, a serialadvanced technology attachment (SATA) bus, a Video Electronics StandardsAssociation local (VLB) bus, or another suitable bus or a combination oftwo or more of these. Bus 1112 may include one or more buses 1112, whereappropriate. Although this disclosure describes and illustrates aparticular bus, this disclosure contemplates any suitable bus orinterconnect.

Herein, a computer-readable non-transitory storage medium or media mayinclude one or more semiconductor-based or other types of integratedcircuits (ICs) (such, as for example, field-programmable gate arrays(FPGAs) or application-specific ICs (ASICs)), hard disk drives (HDDs),hybrid hard drives (HHDs), optical discs, optical disc drives (ODDs),magneto-optical discs, magneto-optical drives, floppy diskettes, floppydisk drives (FDDs), magnetic tapes, solid-state drives (SSDs),RAM-drives, SECURE DIGITAL cards or drives, any other suitablecomputer-readable non-transitory storage media, or any suitablecombination of two or more of these, where appropriate. Acomputer-readable non-transitory storage medium may be volatile,non-volatile, or a combination of volatile and non-volatile, whereappropriate.

Herein, “or” is inclusive and not exclusive, unless expressly indicatedotherwise or indicated otherwise by context. Therefore, herein, “A or B”means “A, B, or both,” unless expressly indicated otherwise or indicatedotherwise by context. Moreover, “and” is both joint and several, unlessexpressly indicated otherwise or indicated otherwise by context.Therefore, herein, “A and B” means “A and B, jointly or severally,”unless expressly indicated otherwise or indicated otherwise by context.

The scope of this disclosure encompasses all changes, substitutions,variations, alterations, and modifications to the example embodimentsdescribed or illustrated herein that a person having ordinary skill inthe art would comprehend. The scope of this disclosure is not limited tothe example embodiments described or illustrated herein. Moreover,although this disclosure describes and illustrates respectiveembodiments herein as including particular components, elements,feature, functions, operations, or steps, any of these embodiments mayinclude any combination or permutation of any of the components,elements, features, functions, operations, or steps described orillustrated anywhere herein that a person having ordinary skill in theart would comprehend. Furthermore, reference in the appended claims toan apparatus or system or a component of an apparatus or system beingadapted to, arranged to, capable of, configured to, enabled to, operableto, or operative to perform a particular function encompasses thatapparatus, system, component, whether or not it or that particularfunction is activated, turned on, or unlocked, as long as thatapparatus, system, or component is so adapted, arranged, capable,configured, enabled, operable, or operative. Additionally, although thisdisclosure describes or illustrates particular embodiments as providingparticular advantages, particular embodiments may provide none, some, orall of these advantages.

What is claimed is:
 1. A method comprising, by a computing device:receiving a sequence of location readings from a first source and motiondata from a second source associated with a mobile computing device,wherein the sequence of location readings and motion data correspond toa concurrent period of time; based on the motion data from the secondsource, generating a motion-data trace of a motion path; determining aninitial path traveled by a vehicle based on the sequence of locationreadings, the initial path comprising a sequence of location points;determining that a location point in the sequence of location points ofthe initial path is inaccurate based on a distance between the locationpoint and a corresponding point on the motion-data trace of the motionpath exceeding a threshold distance; removing the inaccurate locationpoint from the sequence of location points of the initial path;inserting the corresponding point on the motion-data trace of the motionpath into the sequence of location points of the initial path to replacethe inaccurate location point; and determining a corrected path traveledby the vehicle based on the sequence of location points including thecorresponding point.
 2. The method of claim 1, further comprisingcausing a navigation route to be displayed on a display screen, thenavigation route being based at least in part on the corrected pathtraveled by the vehicle.
 3. The method of claim 1, further comprising:generating a plurality of motion-data traces of a plurality of motionpaths traveled by one or more mobile computing devices in an areaassociated with the sequence of location readings; determining anaverage motion path from the plurality of motion-data traces; andproviding the average motion path to an autonomous vehicle for use inautonomous navigation.
 4. The method of claim 3, further comprisinggenerating a map that comprises at least one motion-data trace of theplurality of motion-data traces or the average motion path.
 5. Themethod of claim 1, further comprising: determining, from the motiondata, a sequence of delta turn angles of the mobile computing device,wherein each delta turn angle represents a difference between a currentturn angle and a previous turn angle in the sequence of delta turnangles; determining, based on the sequence of delta turn angles, a turntrajectory for the mobile computing device; and determining, that theturn trajectory satisfies a threshold turn trajectory, wherein:determining the initial path traveled by the vehicle based on thesequence of location readings is performed responsive to determiningthat the turn trajectory satisfies the threshold turn trajectory.
 6. Themethod of claim 5, further comprising providing the turn trajectory toan autonomous vehicle for use in autonomous navigation.
 7. The method ofclaim 1, further comprising using the motion-data trace of the motionpath to determine a total distance traveled by the vehicle for a trip.8. The method of claim 1, wherein the method further comprises:receiving a signal strength associated with a global positioning system(GPS) of the mobile computing device; and determining that the signalstrength is below a threshold strength, wherein: determining that thelocation point in the sequence of location points of the initial path isinaccurate is further based on the determination that the signalstrength is below the threshold strength.
 9. The method of claim 1,wherein: generating the motion-data trace of the motion path comprisesdetermining a plurality of motion units for the motion-data trace of themotion path; and determining that the location point in the sequence oflocation points of the initial path is inaccurate is further based on adistance between a motion unit of the plurality of motion units and alocation point of the sequence of location points of the initial pathexceeding a threshold distance.
 10. The method of claim 1, wherein: thefirst source is a global positioning system (GPS) of the mobilecomputing device; and the second source is at least one of anaccelerometer or a gyroscope of the mobile computing device.
 11. Asystem comprising: one or more processors and one or morecomputer-readable non-transitory storage media coupled to one or more ofthe processors, the one or more computer-readable non-transitory storagemedia comprising instructions operable when executed by one or more ofthe processors to cause the system to perform operations comprising:receiving a sequence of location readings from a first source and motiondata from a second source associated with a mobile computing device,wherein the sequence of location readings and motion data correspond toa concurrent period of time; based on the motion data from the secondsource, generating a motion-data trace of a motion path; determining aninitial path traveled by a vehicle based on the sequence of locationreadings, the initial path comprising a sequence of location points;determining that a location point in the sequence of location points ofthe initial path is inaccurate based on a distance between the locationpoint and a corresponding point on the motion-data trace of the motionpath exceeding a threshold distance; removing the inaccurate locationpoint from the sequence of location points of the initial path;inserting the corresponding point on the motion-data trace of the motionpath into the sequence of location points of the initial path to replacethe inaccurate location point; and determining a corrected path traveledby the vehicle based on the sequence of location points including thecorresponding point.
 12. The system of claim 11, wherein the processorsare further operable when executing the instructions to performoperations comprising: causing a navigation route to be displayed on adisplay screen, the navigation route being based at least in part on thecorrected path traveled by the vehicle.
 13. The system of claim 11,wherein the processors are further operable when executing theinstructions to perform operations comprising: generating a plurality ofmotion-data traces of a plurality of motion paths traveled by one ormore mobile computing devices in an area associated with the sequence oflocation readings; determining an average motion path from the pluralityof motion-data traces; and providing the average motion path to anautonomous vehicle for use in autonomous navigation.
 14. One or morecomputer-readable non-transitory storage media embodying software thatis operable when executed to cause one or more processors to performoperations comprising: receiving a sequence of location readings from afirst source and motion data from a second source associated with amobile computing device, wherein the sequence of location readings andmotion data correspond to a concurrent period of time; based on themotion data from the second source, generating a motion-data trace of amotion path; determining an initial path traveled by a vehicle based onthe sequence of location readings, the initial path comprising asequence of location points; determining that a location point in thesequence of location points of the initial path is inaccurate based on adistance between the location point and a corresponding point on themotion-data trace of the motion path exceeding a threshold distance;removing the inaccurate location point from the sequence of locationpoints of the initial path; inserting the corresponding point on themotion-data trace of the motion path into the sequence of locationpoints of the initial path to replace the inaccurate location point; anddetermining a corrected path traveled by the vehicle based on thesequence of location points including the corresponding point.
 15. Themedia of claim 14, wherein the software is further operable whenexecuted to cause the one or more processors to perform operationscomprising: causing a navigation route to be displayed on a displayscreen, the navigation route being based at least in part on thecorrected path traveled by the vehicle.
 16. The method of claim 1,wherein each location reading of the sequence of location readingscorresponds to a first unit of the concurrent period of time, and priorto receiving the motion data from the second source: preliminary motiondata from the second source comprises measurements corresponding to asecond unit of the concurrent period of time, wherein the second unit isshorter than the first unit; and the preliminary motion data from thesecond source is processed to produce motion data from the second sourcecomprising measurements corresponding to the first unit of theconcurrent period of time.
 17. The method of claim 1, furthercomprising: prior to generating the motion-data trace of the motionpath, determining, based on the motion data from the second sourceassociated with the mobile computing device, that a vehicle in which themobile computing device is traveling is turning.
 18. The method of claim1, further comprising: prior to generating the motion-data trace of themotion path, determining, based on the motion data from the secondsource associated with the mobile computing device, that a vehicle inwhich the mobile computing device is traveling is at an intersection.19. The method of claim 1, further comprising: modifying, in associationwith a current trip associated with the vehicle and based on thecorrected path traveled by the vehicle: a routing provided by thecomputing device; an estimated time of arrival of the vehicle; or a mapmaintained by the computing device.
 20. The method of claim 1, whereinthe mobile computing device is carried by the vehicle.